The present invention relates to methods and apparatus for implementing multiple IP addresses on multiple ports of a physical machine. More specifically, the invention relates to methods and apparatus for intercepting packets which are addressed to a virtual port on a virtual machine and translating the destination IP address and the destination port number to a destination IP address and destination port number of a physical machine which acts as a host or server and is selected to handle connections.
With the recent explosive growth of the Internet, a very large percentage of businesses, including many small businesses, desire to have an internet site which is dedicated to them. An internet site is generally implemented on an internet server which is connected to the internet via an internet service provider (ISP). As described in to co-pending application Ser. No. 08/850,248 now abandoned, (Attorney Docket No. CISCP005 previously incorporated by reference, some internet sites are busy enough to require a plurality of servers in order to handle all of the connections which are made to those sites. Accordingly, co-pending application Ser. No. 08/850,248 now abandoned, (Attorney Docket No. CISCP005 describes a system and method for monitoring the availability of servers at an Internet site which simulate a virtual server and preferentially sending new connection requests to servers which are available for connections and which are likely to have faster response times. For less visited sites, the opposite situation is presented. Instead of one site requiring a plurality of servers, it would be desirable to combine a plurality of sites on a single server, since each one of the individual sites would not require all of the capacity of the server in order to service its connection traffic.
One way of handling this would be to provide a plurality of small sites on a single server which can support a plurality of connections to a plurality of IP addresses. Currently, servers which are capable of having two or more physical connections to other networks are referred to as multihomed hosts. Multihomed hosts must have a unique IP address for each of their physical connections.
FIG. 1 is an illustration of a multi-homed server 102 which serves three different IP addresses. Messages sent to a first IP address x.x.x.1 are routed to a first set of ports 104, which includes a port 80 which services WorldWide Web traffic, a port 20 which is the FTP data port, and a port 23 which is the Telnet port. Other ports may also be included within set of ports 104. The WorldWide Web, the FTP data, and the TelNet ports are mentioned because they are well known port numbers which by convention, always support those respective functions. A second set of ports 106 also includes a port 80, a port 20, and a port 23 which receive connections for IP address x.x.x.2, and a third set of ports 108 receive connections which are made to IP address x.x.x.3.
Each set of ports which responds to an IP address is an Internet site. A first set of ports 104 corresponds to the site whose domain name is site1.com. A second set of ports 106 corresponds to a site whose domain name is site2.com, and a third set of ports 108 corresponds to an Internet site whose domain name is site3.com. Multi-homed server 102 thus supports connections for each of the Internet sites and accepts connections to the IP address which represents each respective site. For each site, a set of daemons are run at each of the ports, including the well-known ports for that site.
While multihomed hosts make it possible to handle multiple connections to a different IP addresses on a single server, multihomed hosts can create problems in managing traffic. Furthermore, not all commercially available servers or operating systems are configured to be capable of functioning as a multihomed host. It would therefore be desirable if a system and method for servicing a plurality of IP addresses could be developed for servers which do not act as multihomed hosts.
It is also true that Internet traffic tends to be distributed among sites in a manner which is nonhomogenous. That is, certain sites receive a very large quantity of traffic while others receive little or no traffic. Furthermore, traffic on certain cites may increase or decrease unpredictably. It would be desirable if a flexible system and method could be developed for sharing connection load among a group of servers in a manner that would not require any of the servers to be multihomed servers, but that would allow each server to service more than one site and multiple servers to share the load for individual sites.